Skip to content

Conversation

@PaulGD03
Copy link
Member

WIP

…nItem for handling notifications

- only on NanoDLP for now
…rected scaling.

210 effectively disables Flutter-Pi logical pixel scaling
…ethods to BackendService

- also implements per-layer previews
- slightly redesign appBar for more information density
- grey out pause button while already pausing
@PaulGD03 PaulGD03 self-assigned this Oct 13, 2025
@PaulGD03 PaulGD03 added documentation Improvements or additions to documentation enhancement New feature or request behaviour Not necessarily a bug, but a wanted change of behaviour API API-Level Changes User Interface GUI Changes Utility Utility Changes labels Oct 13, 2025
…evelopment

Add a NanoDlpSimulatedClient implementing OdysseyClient to simulate a NanoDLP backend.
… CLI helper

- Add --clear-thumbnails / --clear-thumbnail-cache installer option
- Install clear_orion_thumbnails helper to /usr/local/bin for manual cache clears
- Add clear_thumbnail_cache_for_user() to remove both $HOME/.cache/orion_thumbnail_cache and XDG_CACHE_HOME/.../orion_thumbnail_cache
- Preserve vendor/config files on "reinstall_keep" and auto-clear cache on full "reinstall"
- Extend existing install/uninstall menu with Reinstall (keep), Thumbnail-clear choice, and updated prompts
- Shorten and clarify doc comments.
- Collapse redundant platform-specific branches and simplify conditionals.
- Make shouldBlur default to skipping blur for interactive surfaces (can be forced on),
  and remove extra early returns/whitespace.
- Minor formatting cleanup across helper methods.
…tom borderColor, and tweak defaults

- Introduce floatingSurface on GlassEffect to ensure backdrop blur is only applied for floating surfaces (dialogs, FABs) or when forceBlur is set.
- Plumb floatingSurface through GlassAlertDialog, GlassDialog, GlassCard, GlassChoiceChip, and GlassFloatingActionButton.
- Add optional borderColor to createGlassDecoration and use it for the decoration border.
- Change default base fill color to grey for the glass decoration and restructure Dialog wrapper to apply shadow/borderRadius.
…s UI

- Introduce GlassButtonTint and context-aware tint palettes; make GlassButton tint-aware for both glass and material variants (tinted outlines, blended fill, adjusted overlays, icon/text coloring).
- Add helper palette resolution and toButtonStyle() to produce consistent material fallback styles.
- Use tinting in DetailsScreen and StatusScreen for semantic actions (delete -> negative, options/confirm -> neutral, pause/resume -> positive/warn mapping, hold -> negative).
- Enhance NotificationWatcher: map notification actions to semantic tints, mark 'resume'/'continue' as neutral, call resume before cancel for 'stop' flow (with a short delay), and simplify button styling.
- Replace notification icon with Phosphor warning icon and slightly adjust dialog title typography for improved legibility.
…pper-error, aegis-error, aegis-info and default notification types
…d vendor theme seed/gradient to vendor config
Implement previously unimplemented NanoDLP endpoints:
- manualCure(bool): call /projector/on or /projector/blank, log request/response,
  parse JSON into NanoManualResult (fall back to ok=true on parse error),
  and throw on non-200 responses.
- displayTest(String): map common test names to real NanoDLP endpoints
  (Grid, Logo, Measure, White), resolve a command fallback to /display/test/<test>,
  perform the request, treat HTTP 200 as success and throw on non-200.
…t exposure buttons/icons

- add OrionConfig instance and compute delayTime (1s default, 0s for NanoDLP)
- pass delayTime into showExposureDialog and wait before starting countdown
- set progress indicator background color for visibility
- fix exposure button targets, icons and labels (Logo / Measure / Clean mappings)
…_features

Use the Athena-specific release branch when downloading the Orion tarball for Athena 2.
…action buttons

- Set barrierDismissible=false for connection and notification dialogs to prevent accidental dismissal.
- Rework notification watcher button construction: build coreButtons list, classify primary actions so they render on the right, preserve tints/sizes, and remove trailing padding on the last button for consistent spacing.
- Introduce BackendClient interface and switch BackendService to use it
- Add NanoDLP helper modules:
  - nano_thumbnail_generator: resizing/placeholder + compute entrypoint
  - nano_simulated_client: in-memory simulated NanoDLP backend for dev
  - nano_state_handler: canonical state/latching logic for cancel/pause
  - nano_analytics_config: mapping and id->key helper
- Implement getAnalytics on NanoDlpHttpClient and OdysseyHttpClient
- Extend NanoFile to parse/respect resinTemperature and expose it
- Preserve raw numeric resin/temp/mcu fields in nanodlp->odyssey mapper
- Capture/resurface resin temperature in StatusProvider
- Update many providers, utilities and tests to depend on BackendClient
  (updated imports, fakes, and thumbnails usage)
- Minor refactors: move thumbnail generator into helpers, update imports

This prepares the codebase for multiple backend implementations (real,
simulated) and adds NanoDLP-specific utilities used by status, thumbnails,
and testing.
…remove duplicate Modified Date card, and tidy landscape layout
…SE or polling

Add AnalyticsProvider ChangeNotifier that retrieves recent analytics/telemetry
snapshots. Uses BackendClient.getStatusStream (SSE) when available and falls
back to polling for NanoDLP or on SSE errors. Normalizes NanoDLP analytics into
a nano_analytics map and exposes helpers (analyticsByKey, getSeriesForKey,
getLatestForKey). Implements exponential backoff with jitter on consecutive
errors and manages polling/SSE lifecycle and disposal.
…ape info layout, and update NanoDLP thumbnail import path
…vider

- Add BackendClient.getAnalyticValue(int) to expose a scalar analytic endpoint
  (e.g. /analytic/value/<id>) so callers can request a single metric quickly.
- Implement getAnalyticValue in NanoDlpHttpClient (HTTP GET, parse numeric/JSON,
  return null on error). Odyssey, simulated and test fakes return null.
- Forward new API through BackendService to the selected delegate.
- Refactor AnalyticsProvider:
  - Simplify provider to a single polling loop (configurable 10 Hz).
  - Fast-path uses getAnalyticValue for the pressure metric (id 6) to append
    samples to an in-memory pressureSeries and publish a normalized
    'nano_analytics' snapshot.
  - Falls back to getAnalytics batch call when scalar value is unavailable.
  - Remove SSE subscription / backoff complexity and related state.
  - Keep pressure series bounded to recent samples.
- Update simulated and fake backend clients to implement the new method (returning null).
… remove Beta Testing revert UI

Load overrideRawForceSensorValues from OrionConfig in initState and persist changes when toggled.
Also remove the Beta Testing "Revert to NanoDLP HMI" section and its invocation to clean up developer UI.
- expose EdgeInsetsGeometry? margin on GlassButton and internal _GlassmorphicButton
  and apply it to the outer container so callers can control spacing without
  extra wrappers
- simplify fill opacity handling (remove intermediate effectiveFillOpacity and
  call GlassPlatformConfig.surfaceOpacity directly)
- reduce disabled content opacity from 0.6 to 0.4 for a more muted disabled state
- minor formatting/cleanup around tint blending and parameter ordering
Use symmetric padding (horizontal: 16, vertical: 6) for the settings body to tighten vertical spacing between cards.
Bump AnalyticsProvider.pollIntervalHertz from 10 to 15 to sample pressure data at 15 Hz.
- Add tareForceSensor to BackendClient and forward in BackendService
- Expose manualTareForceSensor on ManualProvider (calls backend.tareForceSensor)
- Implement NanoDlpHttpClient.manualCommand (POST /gcode) and implement
  tareForceSensor to send a PressureWrite command
- Add tareForceSensor stub to OdysseyHttpClient
- Enhance NanoDlpSimulatedClient.getAnalyticValue to return a smooth,
  decaying oscillation with noise for more realistic simulated analytics;
  add a tareForceSensor placeholder (UnimplementedError)
… raw-force formatting; refine chart window/scale, pause behavior and UI spacing
* feat(assets): add dark mode logo for Open Resin Alliance

* feat(home): add StartupGate widget to manage initial app content loading

* feat(status): enhance initial connection handling and status response tracking

- no need to increase backoff drastically while waiting for API to be ready after boot.

* feat(util): ConnectionErrorWatcher: add initial startup state

* feat(home): add StartupScreen for initial app loading overlay
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API API-Level Changes behaviour Not necessarily a bug, but a wanted change of behaviour documentation Improvements or additions to documentation enhancement New feature or request User Interface GUI Changes Utility Utility Changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants